//
// Created by Jeffrey Wei on 2022/11/2.
// 外部继承该协议即可使用ApiTarget+Request内对应的请求

import Foundation
import Moya
import RxSwift

public protocol NetworkTargetType: TargetType, AccessTokenAuthorizable {
    /// 日志插件options,默认为verbose,即全量打印,可重新自定义,暂不支持自定义的细节描述改造
    static var loggerOptions: NetworkLoggerPlugin.Configuration.LogOptions { get }
    /// 返回的结果类型,基本上每个项目的结果结构一致,直接定义一个遵守了ApiResponse的数据即可即可(也可针对不同服务单独定义)
    var responseType: NetworkResponse.Type { get }
    /// token类型和值,基于AccessTokenPlugin封装,具体见底层插件代码
    var accessToken: (type: AuthorizationType, value: String)? { get }
    /// 请求
    var requestMode: NetworkRequestMode { get }
    /// 处理错误的函数,但不会阻止错误继续抛出,可以处理一些通用错误,例如token失效等
    func handleError(error: NetworkError)
}
